#include "init.h"
#include "data.h"
#define t1 0
/* Diplomova prace: Vyuziti embedded modulu pro monitoring zivotnich funkci pacienta
 * Trida: MericiDeska.c
 * Autor: Tomas Cinert
 * Vytvoreno: 20.3.2012
 */




 
volatile int i=0;
/* Inicializace I/O */
void initPort(void)
{
	
    DDRB |= (1<<PB0)|(1<<PB1);
	PORTB |=(1<<PB0)|(1<<PB1);
	DDRD |= (1<<PD4)|(1<<PD6)|(1<<PD7);
	DDRD &= (0<<PD5);
	PORTD |=(1<<PD6)|(1<<PD7);
	PORTD &=(0<<PD4);
}


/* Inicializace interruptu */
void initINT()
{
    sei();			// Povoleni globalniho interruptu
	GICR|=(1<<INT0);
	GIMSK|=(1<<INT0);
	GICR|=(1<<INT1);
	GIMSK|=(1<<INT1);
}

/* Obsluha interruptu INT0 */
ISR(INT0_vect)
{
	vlajka=1;
	PORTB |= _BV(PB0);
}

/* Obsluha interruptu INT1 */
ISR(INT1_vect)
{
	pouzijSPI=1;
}
/* Obsluha interrputu od UART */
ISR(USART_RXC_vect)
{
   char prijat=UDR;
   
	if(dataUART)
	{
   		temp[i]=prijat;
		i++;
		if(i==10)
		{
			dataUART=0;
			i=0;
		}
	}
	if((prijat=='<')
    {
   		dataUART=1;
	}
} 
/*  Obsluha interruptu od SPI */
ISR(SPI_STC_vect) 

{ 
//SPI_output_data=SPDR; // read out new data received 
	startPrenosu=1;

} 
/* Metoda na odeslani dat */


int main(void)  
{
	
//	char *zv="OK";
	pouzijSPI=0;
	dataUART=0;
	int citac=255;
	initUART();
	initAD();
	initPort();
	/* Program */
	testSpojeni();
	
	while(1) { 
			if(nacteniRamce())
			{
				kontrolaDat();
			}
			if(startPrenosu==1)
			{
				dataOdeslat();		// Posila pouze pri SPI rezimu
				startPrenosu=0;
			}	
	 		if(vyhodnoceni()==1)
			{
					alarm();				
               
			} 
			if(nacteniRamce())
			{
				kontrolaDat();
			}
			if(nacteniTeploty());		// Uvnitr otestovat na hodnotu a pote ulozit do promenne a hned delit.. delat si interni pocty prubehoi
			{
				odeslatData();	
			}					// Teplota negeneruje alarm, vzhodnocuje se az nahore
			citac--;
			if(!(citac))
			{
				zapis(1,"!!!!",'!','!');
				citac=255;
			}
			

	}
}

